Home / JagoanSiber CTF / Memory Forensics
JagoanSiber - SOC Analyst CTF Memory Forensics

Memory Forensics

Analisis dump memori untuk mengungkap proses tersembunyi, koneksi jaringan mencurigakan, dan artefak malware. Challenge ini menguji kemampuan menggunakan tools forensik memori untuk merekonstruksi aktivitas penyerang dari RAM capture.

8 Challenges
8/8 Solved
1535 Total Points

Challenges in this Category

Challenge

Scenario: During incident response, a memory dump was captured from the compromised server "challenge" (160.187.165.218). Analysis shows abnormal CPU usage indicating a cryptocurrency miner is running.

Using memory forensic techniques, analyze the memory dump and identify the process name of the cryptocurrency miner.
Flag Format: SOC{processname}
Example: SOC{crypto.exe}

Setup: Volatility 3

Step 1: Download Required Files

bash
# Download the forensics package (contains memory.lime.gz + symbols/)
wget http://158.69.63.162/downloads/memory-forensics-package.tar.gz

# Extract (this will take a few minutes - 2.8GB file)
tar -xzf memory-forensics-package.tar.gz

# Decompress memory dump
gunzip memory.lime.gz
# Result: memory.lime (4.0 GB)
Files included:
  • memory.lime.gz - Compressed memory dump (2.8 GB)
  • symbols/linux/ubuntu-6.8.0-41-generic.json - Pre-built Volatility3 symbol file (61 MB)

Step 2: Install Volatility 3

Step 3: Using Volatility 3 with Symbol Files

Since this memory dump is from Ubuntu 24.04.1 (kernel 6.8.0-41-generic), you need the symbol file provided in the package. Use the -s flag to point to it:

bash
# Basic syntax
vol -f memory.lime -s symbols/ linux.[PLUGIN]
# OR
python3 vol.py -f memory.lime -s symbols/ linux.[PLUGIN]

# Examples:
vol -f memory.lime -s symbols/ linux.bash.Bash
vol -f memory.lime -s symbols/ linux.sockstat.Sockstat
First-Time Loading Warning:
  • Initial run will take 2-5 minutes to parse and cache the symbol table
  • You'll see "Stacking attempts..." message — this is normal
  • Subsequent runs will be much faster (~10-30 seconds)

Solution

Pada challenge ini kita diminta untuk menemukan nama proses cryptocurrency miner yang berjalan di server. Kita bisa menggunakan plugin linux.pslist.PsList atau linux.pstree.PsTree untuk melihat daftar proses yang berjalan.

bash
vol -f memory.lime -s symbols/ linux.pslist.PsList
pslist

Figure 1: Menampilkan daftar proses yang berjalan di server

Dari output tersebut, kita bisa menemukan proses mencurigakan yaitu system-check kenapa saya bisa yakin kalau itu adalah proses cryptocurrency miner? karena proses tersebut dijalankan dari bash yang merupakan parent process dari proses cryptocurrency miner.

Flag
SOC{system-check}

Challenge

Question: I think you are a good defender. you know how to use volatility right? Our Team has been changing the SSH port far from default port. can you tell what port of SSH is listened?
Flag Format: SOC{port}

Solution

Pada challenge ini kita diminta untuk menemukan port SSH yang digunakan oleh server. Kita bisa menggunakan plugin linux.sockstat.Sockstat untuk melihat daftar port yang digunakan.

bash
vol -f memory.lime -s symbols/ linux.sockstat.Sockstat | grep ssh
netstat

Figure 1: Menampilkan daftar port yang digunakan oleh server

bash
4026531840      sshd    1858    1858    3       0x979986550000  AF_INET6        STREAM  TCP     ::      2222    ::      0       LISTEN  -

Dari output tersebut, kita bisa menemukan port SSH yang digunakan oleh server yaitu 2222.

Flag
SOC{2222}

Challenge

Question: Besides the crypto miner, the compromised server was running a vulnerable Node.js web application. This application was the initial entry point for the attacker (via command injection vulnerability) that might be not detected in SIEM Identify the port number that the Node.js web application was listening on.
Flag Format: SOC{portnumber}

Solution

Pada challenge ini kita diminta untuk menemukan port Node.js yang digunakan oleh server. Kita bisa menggunakan plugin linux.sockstat.Sockstat untuk melihat daftar port yang digunakan.

bash
vol -f memory.lime -s symbols/ linux.sockstat.Sockstat | grep node
netstat

Figure 1: Menampilkan port yang digunakan oleh node

bash
4026531840 100.0node    4237    4237    18      0x9799862e1280  AF_INET STREAM  TCP     0.0.0.0 3000    0.0.0.0 0       LISTEN  -

Dari output tersebut, kita bisa menemukan port Node.js yang digunakan oleh server yaitu 3000.

Flag
SOC{3000}

Challenge

Question: After you found the malicious process, is this process have parent? if does what is the parent process id / PPID
Flag Format: SOC{PPID}

Solution

Pada challenge ini kita diminta untuk menemukan parent process id / PPID dari proses yang terinfeksi. Kita bisa menggunakan plugin linux.pslist.PsList untuk melihat daftar proses yang berjalan di server.

bash
vol -f memory.lime -s symbols/ linux.pslist.PsList | grep system-check
pslist

Figure 1: Menampilkan parent process id / PPID dari proses yang terinfeksi

bash
0x979984fc28c0.04410    4410    4408 king system-check    0       0       0       0       2026-02-05 15:49:37.413130 UTC  Disabled

Dari output tersebut, kita bisa menemukan parent process id / PPID dari proses yang terinfeksi yaitu 4408.

Flag
SOC{4408}

Challenge

Question: [Now that you've identified the miner process name, determine its Process ID (PID). The PID is crucial for further analysis of the malicious process's memory, file handles, and network connections. Challenge: Find the PID of the system-check process Hint: The same strings output that showed the process name also contains the PID
Flag Format: SOC{flag}

Solution

Pada challenge ini kita diminta untuk menemukan process id / PID dari proses yang terinfeksi. Kita bisa menggunakan plugin linux.pslist.PsList untuk melihat daftar proses yang berjalan di server.

bash
vol -f memory.lime -s symbols/ linux.pslist.PsList | grep system-check
pslist

Figure 1: Menampilkan process id / PID dari proses yang terinfeksi

bash
0x979984fc28c0.04410    4410    4408 king system-check    0       0       0       0       2026-02-05 15:49:37.413130 UTC  Disabled

Dari output tersebut, kita bisa menemukan process id / PID dari proses yang terinfeksi yaitu 4410.

Flag
SOC{4410}

Challenge

Question: Cryptocurrency miners connect to mining pools to contribute hashrate and receive rewards. The connection details are stored in memory. Analyze the memory dump and find the IP address & Port of the mining pool server that the miner is connecting to.
Flag Format: SOC{IP:PORT}

Solution

Pada challenge ini kita diminta untuk menemukan ip address & port dari mining pool server yang digunakan oleh miner. Kita bisa menggunakan plugin linux.sockstat.SockStat untuk melihat daftar koneksi jaringan yang berjalan di server.

bash
vol -f memory.lime -s symbols/ linux.sockstat.Sockstat | grep 4410
netstat

Figure 1: Menampilkan ip address & port dari mining pool server yang digunakan oleh miner

bash
4026531840 100.0system-check    4410    4410    12      0x979985f98940  AF_INET STREAM  TCP     10.78.108.211   38008   15.235.229.127  3333    ESTABLISHED-
4026531840      system-check    4410    4411    12      0x979985f98940  AF_INET STREAM  TCP     10.78.108.211   38008   15.235.229.127  3333    ESTABLISHED-
4026531840      system-check    4410    4412    12      0x979985f98940  AF_INET STREAM  TCP     10.78.108.211   38008   15.235.229.127  3333    ESTABLISHED-
4026531840      system-check    4410    4413    12      0x979985f98940  AF_INET STREAM  TCP     10.78.108.211   38008   15.235.229.127  3333    ESTABLISHED-
4026531840      system-check    4410    4414    12      0x979985f98940  AF_INET STREAM  TCP     10.78.108.211   38008   15.235.229.127  3333    ESTABLISHED-
4026531840      system-check    4410    4415    12      0x979985f98940  AF_INET STREAM  TCP     10.78.108.211   38008   15.235.229.127  3333    ESTABLISHED-
4026531840      system-check    4410    4422    12      0x979985f98940  AF_INET STREAM  TCP     10.78.108.211   38008   15.235.229.127  3333    ESTABLISHED-
4026531840      system-check    4410    4423    12      0x979985f98940  AF_INET STREAM  TCP     10.78.108.211   38008   15.235.229.127  3333    ESTABLISHED-

Dari output tersebut, kita bisa menemukan ip address & port dari mining pool server yang digunakan oleh miner yaitu 15.235.229.127:3333.

Flag
SOC{15.235.229.127:3333}

Challenge

Question: Cryptocurrency miners send mined coins to a wallet address. This address is configured in the miner's configuration file (config.json). Extract the Monero wallet address that the attacker is using to receive mining rewards. This is critical evidence for tracking the attacker's financial infrastructure
Flag Format: SOC{WalletAddress}

Solution

Pada challenge ini kita diminta untuk menemukan monero wallet address yang digunakan oleh attacker. Disini saya melakukan pencarian string pada memory dump karena sebelumnya kita sudah mengetahui ip address dan port dari mining pool server yang digunakan oleh attacker.

bash
strings memory.lime | grep "15.235.229.127" -B 20 -A 20
pslist

Figure 1: Menampilkan hasil pencarian string pada memory dump

Dari output tersebut, Saya mencurigai string pool.supportxmr.com.

bash
pool.supportxmr.com
pool.supportxmr.com:3333
pool.supportxmr.com

Saya melakukan pencarian string lagi pada memory dump untuk menemukan monero wallet address yang digunakan oleh attacker dengan menggunakan string pool.supportxmr.com.

bash
strings memory.lime | grep "pool.supportxmr.com" -B 5 -A 5
pslist

Figure 2: Menampilkan hasil pencarian string pada memory dump

Dan BOOM! Dari output tersebut, saya menemukan string yang dicurigai monero wallet address yaitu.

bash
4492zTyp9mMSZK9FbXJzruWUZNmovsaES4CuEgAUw8MhhF9QrfYMbdUWPATRGDyDJCW4Yqc1fJTFkGPvKR9Xm4riNJTtnewy

Setelah saya submit flag tersebut, ternyata betul dugaan saya kalau itu adalah monero wallet address yang digunakan oleh attacker.

Flag
SOC{4492zTyp9mMSZK9FbXJzruWUZNmovsaES4CuEgAUw8MhhF9QrfYMbdUWPATRGDyDJCW4Yqc1fJTFkGPvKR9Xm4riNJTtnewy}

Challenge

Question:Cryptocurrency miners send mined coins to a wallet address. This address is configured in the miner's configuration file (config.json). Extract the Monero wallet address that the attacker is using to receive mining rewards. This is critical evidence for tracking the attacker's financial infrastructure.
Flag Format: SOC{AmountOfXMR}

Solution

Pada challenge ini kita diminta untuk menemukan jumlah monero yang ditambang oleh attacker. Sebelumnya kita sudah mengetahui monero wallet address yang digunakan oleh attacker dan juga mining pool server yang digunakan oleh attacker. selanjutnya saya melakukan OSINT pada mining pool server tersebut dengan mengakses website supportxmr.com dan memasukkan monero wallet address yang digunakan oleh attacker.

pslist

Figure 1: Menampilkan hasil OSINT pada mining pool server

Dari hasil OSINT tersebut saya mendapatkan informasi transaksi attacker dengan hint yang di berikan id transaksi terakhirnya 30f5ab1.

pslist

Figure 2: Menampilkan hasil OSINT pada mining pool server

Dari informasi transaksi terakhir attacker tersebut, saya mendapatkan informasi jumlah monero yang ditambang oleh attacker yaitu 0.0152.

Flag
SOC{0.0152}